package pe.gob.mtpe.construcsys.mybatis.implementacion;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import pe.gob.mtpe.construcsys.bean.Capacitacion;
import pe.gob.mtpe.construcsys.bean.Empleador;
import pe.gob.mtpe.construcsys.bean.ParamConsultaCapacitacion;
import pe.gob.mtpe.construcsys.bean.ParamConsultaExpLaboral;
import pe.gob.mtpe.construcsys.mybatis.comun.MyBatisConnectionFactory;
import pe.gob.mtpe.construcsys.mybatis.interfase.INTCapacitacion;

public class IMPCapacitacion implements INTCapacitacion{
	
private SqlSessionFactory sqlSessionFactory;
	

	public IMPCapacitacion(){
		sqlSessionFactory=MyBatisConnectionFactory.getSqlSessionFactory();
	}
	

	@Override
	public String insertar(Capacitacion capacitacion) throws Exception {
		SqlSession session = sqlSessionFactory.openSession();
		String mensaje="";
		try {
			session.insert("Capacitacion.insertarCapacitacion", capacitacion);
			session.commit();
		} catch (Exception e) {
			System.out.println("Error en IMPCapacitacion>insertarCapacitacion: "+e.getMessage());	
			mensaje=e.getMessage();	
			session.rollback();
		} finally {
			session.close();
		}
		return mensaje;
	}

	@Override
	public String actualizar(Capacitacion capacitacion) throws Exception {
		SqlSession session = sqlSessionFactory.openSession();
		String mensaje="";
		try {
			session.update("Capacitacion.actualizarCapacitacion", capacitacion);
			session.commit();
		} catch (Exception e) {
			System.out.println("Error en IMPCapacitacion>actualizarCapacitacion: "+e.getMessage());	
			mensaje=e.getMessage();	
			session.rollback();
		} finally {
			session.close();
		}
		return mensaje;
	}

	@Override
	public String eliminar(Capacitacion capacitacion) throws Exception {
		SqlSession session = sqlSessionFactory.openSession();
		String mensaje="";
		try {
			session.delete("Capacitacion.eliminarFisicoCapacitacion", capacitacion);
			session.commit();
		} catch (Exception e) {
			System.out.println("Error en IMPCapacitacion>eliminarFisicoCapacitacion: "+e.getMessage());	
			mensaje=e.getMessage();	
			session.rollback();
		} finally {
			session.close();
		}
		return mensaje;
	}

	@Override
	public List<Capacitacion> listar(ParamConsultaCapacitacion parametro)
			throws Exception {
		SqlSession session=sqlSessionFactory.openSession();
		List<Capacitacion>  lista=new ArrayList<Capacitacion>();
		try {				
			lista=session.selectList("Capacitacion.consultaCapacitacion", parametro);		
		} catch (Exception e) {
			System.out.println("Error en IMPCapacitacion>consultaCapacitacion: "+e.getMessage());			
		} finally {
			session.close();
		}
		return lista;
	}

	@Override
	public Capacitacion obtener(ParamConsultaCapacitacion parametro)
			throws Exception {
		SqlSession session=sqlSessionFactory.openSession();
		Capacitacion  respuesta=new Capacitacion();
		try {				
			respuesta=session.selectOne("Capacitacion.consultaCapacitacion", parametro);		
		} catch (Exception e) {
			System.out.println("Error en IMPCapacitacion>consultaCapacitacion: "+e.getMessage());			
		} finally {
			session.close();
		}
		return respuesta;
	}


	@Override
	public List<Empleador> lstEmpleadorCap(ParamConsultaCapacitacion parametro)
			throws Exception {
		SqlSession session=sqlSessionFactory.openSession();
		List<Empleador>  lista=new ArrayList<Empleador>();
		try {				
			lista=session.selectList("Capacitacion.lstEmpleadorCap", parametro);	
			System.out.println("lstEmpleadorCap.size():"+lista.size());
		} catch (Exception e) {
			System.out.println("Error en IMPCapacitacion>lstEmpleadorCap: "+e.getMessage());			
		} finally {
			session.close();
		}
		return lista;
	}

}
